11. 代码流程
TO DO
你在对应的代码文件中(
bikeshare.py
) 中必须填写的所有代码都用以
“TO DO”
开头的注释标记。请仔细阅读该文件,大致了解脚本流程以及为了完成此项目你需要添加的代码。
代码流程
Python中首先执行最先出现的非函数定义和非类定义的没有缩进的代码,会从前到后执行。在
bikeshare.py
中,代码的执行顺序会从
if __name__ == "__main__":
开始,执行里面的
main()
函数。
在这个
main()
函数中,是一个条件为
True
的
while
循环,除非被下方的
if
条件语句打破,循环会一直继续下去。
这个条件是:
restart = input('\nWould you like to restart? Enter yes or no.\n') # 你是否想要重新开始?输入 yes or no。
if restart.lower() != 'yes': # 如果输入不为 yes
break # 跳出 while 循环,程序结束
接下来我们查看
main()
函数的其他部分,这些语句会被顺序执行。但是这些函数并没有被完整的定义,你需要根据项目中提示的 TO DO 来补全他们。
# 通过用户的输入来得到要分析的 “城市,月,日”
city, month, day = get_filters()
# 加载相应的 “城市,月,日” 的数据
df = load_data(city, month, day)
# 计算并显示共享单车出行的最频繁时间
time_stats(df)
# 计算并显示共享单车出行的最频繁车站
station_stats(df)
# 计算并显示共享单车出行的总/平均时间
trip_duration_stats(df)
# 计算并显示共享单车用户的统计信息
user_stats(df)
交互式体验
bikeshare.py
文件是一个脚本,它会接受原始输入以在终端中创建交互式体验,该体验将回答关于数据集的问题。体验之所以是交互式体验,是因为根据用户的输入,上一页的问题的答案将改变!下面的四个问题将改变答案:
- 你要查看芝加哥、纽约还是华盛顿特区的数据?
- 你要按照月份、日期过滤数据,还是不过滤数据?
- 如果按月份过滤,哪个月份?1 月?2 月?3 月?4 月?5 月?6 月?
- 如果按日期过滤,哪个日期?
要完成项目,请在 [工作区]在教室内完成项目 中使用
bikeshare.py
。
正确地使用 NumPy 和/或 pandas 意味着需要使用向量化的运算,你暂时不需要理解这方面的概念。只需要明白你可以在 NumPy 和 pandas 中循环访问这些数据结构。但使用这两个库使我们很难评估在这门课程中讲授的核心概念(数据类型和运算符、控制流、函数等)。
我们我们已经在
bikeshare.py
提供了一些TO DO待办事项。注意这个
bikeshare.py
文件只是一个模板,你不是必须要使用它。只要你能确保最终的功能,你可以改变模板里面的函数来实现交互式体验。
交互式体验可以通过在
bikeshare.py
中的
input()
语句来进行实现,我们已经给出了 4 个提示。你需要补全 TO DO 代码以实现此交互式体验。本项目要求输入大小写不敏感,你可以使用
lower()
,
upper()
,
title()
等字符串方法对输入值进行处理。
如果你遇到困难
如果你在补全这些函数的期间遇到困难,请尝试下面几种途径:
-
查看前面的课程/练习题,是否课程中有提供的示例或文档,例如:
pandas
,datetime
; - 使用搜索引擎进行搜索,找到可能实现某功能的函数/方法,再对应查看该函数/方法的文档,根据文档中提供的说明或示例,了解如何进行使用;
- 在论坛进行提问 或者 提问你的助教。